Jupyter notebook

发布 : 2017-05-15 分类 : 深度学习 浏览 :

Jupyter notebook是什么?

notebook是一种Web 应用,能让用户将说明文本、数学方程、代码和可视化内容全部组合到一个易于共享的文档中

Notebook已迅速成为处理数据的必备工具
其已知用途包括数据清理和探索可视化机器学习大数据分析

notebook 如何工作

Jupyter notebook 源自 Fernando Perez 发起的 IPython 项目。IPython是一种交互式shell,与普通的 Python shell 相似,但具有一些很好的功能(例如语法高亮显示和代码补全)。最初,notebook 的工作方式是,将来自 Web 应用(你在浏览器中看到的 notebook)的消息发送给 IPython 内核(在后台运行的 IPython 应用程序)。内核执行代码,然后将代码发送回 notebook

核心点是notebook的服务器。你通过浏览器连接到该服务器,而notebook呈现为Web应用。你在Web应用中编写的代码通过该服务器发送给内核。内核运行代码并将代码发送回该服务器,之后,任何输出都会返回到浏览器中。保存notebook时,它作为JSON文件(文件扩展名为 .ipynb)写入到该服务器中。

此架构的一个优点是,内核无需运行 Python。由于 notebook 和内核分开,因此可以在两者之间发送任何语言的代码。例如,早期的两个非 Python 内核分别用于 R 语言和 Julia 语言。使用 R 内核时,用 R 编写的代码将发送给执行该代码的 R 内核,这与在 Python 内核上运行 Python 代码完全一样。IPython notebook 已被改名,因为 notebook 变得与编程语言无关。新的名称 Jupyter 由 Julia、Python 和 R 组合而成

另一个优点是,可以在任何地方运行服务器,并且可通过互联网访问服务器。通常,你会在存储所有数据和 notebook 文件的自有计算机上运行服务器。但是,你也可以在远程计算机或云实例(如 Amazon 的 EC2)上设置服务器

安装 Jupyter notebook

到目前为止,安装Jupyter的最简单方法使用Anaconda
该发行版自动附带了Jupyter notebook,能够在默认环境下使用 notebook。

也可以pip使用pip install jupyter notebook 来安装Jupyter notebook

1
[root@sparsematrix ~]# conda install jupyter notebook

启动notebook服务器

允许端口访问

1
2
3
4
[root@sparsematrix jupyter-notebook]# firewall-cmd --zone=public --add-port=8888/tcp --permanent
success
[root@sparsematrix jupyter-notebook]# firewall-cmd --reload
success

生成密码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[matrix@sparsematrix ~]$ ipython
Python 3.5.3 |Anaconda 4.4.0 (64-bit)| (default, Mar 6 2017, 11:58:13)
Type "copyright", "credits" or "license" for more information.

IPython 5.3.0 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.

In [1]: from IPython.lib import passwd

In [2]: passwd()
Enter password:
Verify password:
Out[2]: 'sha1:52d3c4ab56e3:3976b64995c4df4c4bd447137ace65271f5f1bfa'

修改默认配置文件

1
2
3
[matrix@sparsematrix ~]$ jupyter notebook --generate-config
Writing default config to: /home/matrix/.jupyter/jupyter_notebook_config.py
[matrix@sparsematrix ~]$ vi /home/matrix/.jupyter/jupyter_notebook_config.py
1
2
3
4
5
6
c.NotebookApp.ip='*'
c.NotebookApp.password=''
c.NotebookApp.token=''
c.NotebookApp.open_browser = False
c.NotebookApp.password_required=False
c.NotebookApp.port =8888

启动Jupyter

注意:最好不要在root下启动Jupyter

在浏览器地址栏输入:http://Remote_Server_IP:8888/tree?

1
[matrix@sparsematrix ~]$ jupyter notebook

点击“New”(新建),创建新的 notebook、文本文件、文件夹或终端。“Notebooks”下的列表显示了你已安装的内核

1
2
3
4
顶部的选项卡是 Files(文件)、Running(运行)和 Cluster(聚类)
Files(文件)显示当前目录中的所有文件和文件夹
点击 Running(运行)选项卡会列出所有正在运行的notebook
过去,在 Clusters(聚类)中创建多个用于并行计算的内核。现在,这项工作已经由 ipyparallel 接管,因此该选项卡如今用处不多

1
2
3
如果在 conda 环境中运行 notebook 服务器,则你还能访问以下所示的"Conda"选项卡
可以通过该选项卡管理 Jupyter 中的环境
可以执行多种操作,例如创建新的环境、安装包、更新包、导出环境。

关闭Jupyter

通过在终端中按两次 Ctrl + C,可以关闭整个服务器。再次提醒,这会立即关闭所有运行中的 notebook,因此,请确保你保存了工作!

Jupyter快捷键使用

Jupyter Notebook 有两种键盘输入模式

命令模式编辑模式,这与 Vim 有些类似

在编辑模式下,可以往单元中键入代码或文本,此时单元格被绿色的框线包围,且命令模式下的快捷键不生效。

在命令模式下,可以用快捷键命令运行单元格,移动单元格,切换单元格编辑状态等等,此时的单元格被灰色的框线包围,且编辑模式下的快捷键不生效

从命令模式进入编辑模式需按Enter键,从编辑模式切换到命令模式需按Esc 键。

数学表达式

在 Markdown 单元格中,可以使用 LaTeX 符号创建数学表达式。notebook 使用 MathJax 将 LaTeX 符号呈现为数学符号。要启动数学模式,请在 LaTeX 符号两侧加上美元符号(例如 $y = mx + b$),以创建内联的数学表达式

对于数学符号块,请使用两个美元符号

1
2
3
$$
y = \frac{a}{b+c}
$$

1
$y = mx + b$

1
$$P(A\mid B) = \frac{P(B\mid A)P(A)}{P(B)}$$

1
$x^2$

1
2
3
4
$$
a_1 = b_1 + c_1 \\
a_2 = b_2 + c_2 + d_2
$$

Magic 关键字

Magic 关键字是可以在单元格中运行的特殊命令,能让你控制 notebook 本身或执行系统调用(例如更改目录)。

例如,可以使用 %matplotlib 将 matplotlib 设置为以交互方式在 notebook 中工作。

Magic 命令的前面带有一个或两个百分号(% 或 %%),分别对应行 Magic 命令单元格 Magic 命令

行 Magic 命令仅应用于编写 Magic 命令时所在的行,而单元格 Magic 命令应用于整个单元格。

注意:这些 Magic 关键字是特定于普通 Python 内核的关键字

代码计时

有时候,你可能要花些精力优化代码,让代码运行得更快。在此优化过程中,必须对代码的运行速度进行计时

1
2
3
4
5
6
7
8
9
10
11
12
from math import sqrt

def fibo1(n):
if n == 0:
return 0
elif n == 1:
return 1
return fibo1(n-1) + fibo1(n-2)


def fibo2(n):
return ((1+sqrt(5))**n-(1-sqrt(5))**n)/(2**n*sqrt(5))

使用Magic命令timeit测算函数的运行时间

1
%timeit fibo1(20)
1
%timeit fibo2(20)

使用%%timeit测算整个单元格的运行时间

1
import random
1
2
3
4
5
6
7
8
%%timeit
prize = 0
for ii in range(100):
roll = random.randint(1,6)
if roll%2 == 0:
prize += roll
else:
prize -= 1
1
2
3
%%timeit
rolls = (random.randint(1,6) for _ in range(100))
prize = sum(roll if roll%2 == 0 else -1 for roll in rolls)

在notebook中嵌入可视化内容

notebook允许你将图像与文本和代码一起嵌入

使用matplotlib或其他绘图包创建可视化内容时最为有用。

可以使用%matplotlib将matplotlib设置为以交互方式在notebook中工作

默认情况下,图形呈现在各自的窗口中

可以向命令传递参数,以选择特定的“后端”(呈现图像的软件)

要直接在notebook中呈现图形,应将内联后端与命令%matplotlib inline 一起使用

提示:在分辨率较高的屏幕(例如 Retina 显示屏)上,notebook中的默认图像可能会显得模糊
在%matplotlib inline之后使用%config InlineBackend.figure_format = ‘retina’来呈现分辨率较高的图像

1
2
3
4
5
%matplotlib inline
%config InlineBackend.figure_format = 'retina'

import matplotlib.pyplot as plt
import numpy as np
1
2
3
x = np.linspace(0,1,300)
for w in range(2,6,2):
plt.plot(x,np.sin(np.pi*x)*np.sin(2*w*np.pi*x))
本文作者 : Matrix
原文链接 : https://matrixsparse.github.io/2017/05/15/Jupyter notebook/
版权声明 : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!

知识 & 情怀 | 二者兼得

微信扫一扫, 向我投食

微信扫一扫, 向我投食

支付宝扫一扫, 向我投食

支付宝扫一扫, 向我投食

留下足迹